using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using UnityEditor;
using UnityEngine;


namespace HotUpdate.Editor
{
    public partial class ABTools : EditorWindow
    {
        private int nowSelIndex = 0;

        private string[] targetStrings = new string[] {"PC", "IOS", "Android"};

        /// <summary> 目标平台（默认windows平台）。</summary>
        private string targetPlatform => targetStrings[nowSelIndex];

        /// <summary> 文件服务器IP地址。</summary>
        private static string fileServerIP = "ftp://45.207.9.245";

        /// <summary> 文件服务器用户凭证。</summary>
        private static string user = "root";

        /// <summary> 文件服务器密码凭证。</summary>
        private static string password = "root";

        /// <summary> 远程AB包下载路径。</summary>
        private static string romatePath = "Testing";

        /// <summary> 本地AB包上传路径。</summary>
        private static string loaclPath = "Example/GameRes/AssetBundles";

        /// <summary> 对比文件全名。</summary>
        private static string CompareFilefullName = "ABCompareInfo.txt";


        [MenuItem("AB包工具/打开工具窗口")]
        private static void OpenWindow()
        {
            LoadHotUpdate();
            // 获取一个 editorWindown 编辑器窗口对象。
            var windown = GetWindowWithRect(typeof(ABTools), new Rect(0, 0, 350, 380));
            // 显示窗口。
            windown.Show();
        }

        private void OnGUI()
        {
            GUI.Label(new Rect(10, 10, 150, 15), "目标平台");
            // 页签显示。从数组中取出字符串内容来显示，需要改变当前选中的索引。
            nowSelIndex = GUI.Toolbar(new Rect(10, 30, 250, 20), nowSelIndex, targetStrings);

            // 设置文件服务器IP地址。
            GUI.Label(new Rect(10, 60, 180, 15), "文件服务器IP地址");
            fileServerIP = GUI.TextField(new Rect(10, 80, 150, 20), fileServerIP);

            // 设置文件服务器用户凭证。
            GUI.Label(new Rect(10, 100, 180, 15), "文件服务器用户凭证");
            user = GUI.TextField(new Rect(10, 120, 150, 20), user);

            // 设置文件服务器密码凭证。
            GUI.Label(new Rect(10, 140, 180, 15), "文件服务器密码凭证");
            password = GUI.TextField(new Rect(10, 160, 150, 20), password);

            // 设置远程AB包下载路径。
            GUI.Label(new Rect(10, 180, 180, 15), "远程AB包下载路径");
            romatePath = GUI.TextField(new Rect(10, 200, 150, 20), romatePath);

            // 设置本地AB包上传路径。
            GUI.Label(new Rect(10, 220, 180, 15), "本地AB包上传路径");
            loaclPath = GUI.TextField(new Rect(10, 240, 150, 20), loaclPath);

            // Debug.Log(Application.productName); 

            // 设置对比文件全名。
            // GUI.Label(new Rect(10, 260, 180, 15), "对比文件全名");
            // CompareFilefullName = GUI.TextField(new Rect(10, 280, 150, 20), CompareFilefullName);


            // 创建对比文件。
            if (GUI.Button(new Rect(10, 270, 100, 40), "创建对比文件"))
                CreateABCompareFile();

            // 保存默认资源到StreamingAssets。
            if (GUI.Button(new Rect(115, 270, 225, 40), "保存默认资源到StreamingAssets"))
                MoveABToStreamingAssets();

            // 上传AB包和对比文件。
            if (GUI.Button(new Rect(10, 320, 225, 40), "上传AB包和对比文件"))
                UploadAllABFile();
            
            // 上传AB包和对比文件。
            if (GUI.Button(new Rect(240, 320, 100, 40), "保存配置"))
                SaveABConfig();
            
        }
    }
}